<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 对象优化
        const person = { name: "zhangsan ", age: 18, languge: ['js', 'java', 'json'] };
        // 打印所有的key
        console.info(Object.keys(person));
        // 打印所有的value
        console.info(Object.values(person));
        // 打印所有的key-value
        console.info(Object.entries(person));

        // 合并对象，第一个参数是最后的对象，后面的是所有的对象
        const target = { a: 1 };
        const source1 = { b: 2 };
        const source2 = { c: 3 };

        //{a:1,b:2,c:3}
        Object.assign(target, source1, source2);

        console.log(target);//["name", "age", "language"]


        //2）、声明对象简写
        const age = 23
        const name = "张三"
        const person1 = { age: age, name: name }

        const person2 = { age, name }
        console.log(person2);


        //3）、对象的函数属性简写
        let person3 = {
            name: "jack",
            // 以前：
            eat: function (food) {
                console.log(this.name + "在吃" + food);
            },
            //箭头函数this不能使用，对象.属性
            eat2: food => console.log(person3.name + "在吃" + food),
            eat3(food) {
                console.log(this.name + "在吃" + food);
            }
        }

        person3.eat("香蕉");

        person3.eat2("苹果")

        person3.eat3("橘子");


        //4）、对象拓展运算符>>> 360极速不支持！！！！

        // 1、拷贝对象（深拷贝）
        let p1 = { name: "Amy", age: 222 };
        let someone = { ...p1 };
        console.log(someone)  //{name: "Amy", age: 15}

        // 2、合并对象
        let age1 = { age: 333 }
        let name1 = { name: "Amy" }
        let p2 = { name: "zhangsan" }
        p2 = { ...age1, ...name1 }
        console.log(p2)

    </script>
</body>

</html>